package com.qms.qep.service;

import java.util.List;

import com.qms.common.core.domain.AjaxResult;
import com.qms.qep.domain.Certificate;
import com.qms.qep.domain.CertificateData;

/**
 * 证书服务接口
 */
public interface ICertificateService {
    
    /**
     * 查询证书列表
     * 
     * @param certificate 证书查询条件
     * @return 证书集合
     */
    public List<Certificate> selectCertificateList(Certificate certificate);
    
    /**
     * 查询证书详细信息
     * 
     * @param id 证书ID
     * @return 证书
     */
    public Certificate selectCertificateById(Long id);
    
    /**
     * 新增证书
     * 
     * @param certificate 证书信息
     * @return 结果
     */
    public int insertCertificate(Certificate certificate);
    
    /**
     * 修改证书
     * 
     * @param certificate 证书信息
     * @return 结果
     */
    public int updateCertificate(Certificate certificate);
    
    /**
     * 批量删除证书
     * 
     * @param ids 需要删除的证书ID
     * @return 结果
     */
    public int deleteCertificateByIds(Long[] ids);
    
    /**
     * 下载证书
     * 
     * @param id 证书ID
     * @return 结果
     */
    public AjaxResult downloadCertificate(Long id);
    
    /**
     * 签发证书
     * 
     * @param id 证书ID
     * @param certificate 证书信息
     * @return 结果
     */
    public int issueCertificate(Long id, Certificate certificate);
    
    /**
     * 作废证书
     * 
     * @param id 证书ID
     * @param voidReason 作废原因
     * @return 结果
     */
    public int voidCertificate(Long id, String voidReason);
    
    /**
     * 生成证书
     * 
     * @param certificate 证书信息
     * @return 结果
     */
    public AjaxResult generateCertificate(Certificate certificate);
    
    /**
     * 查询证书数据
     * 
     * @param certificateId 证书ID
     * @return 证书数据集合
     */
    public List<CertificateData> selectCertificateDataByCertificateId(Long certificateId);
    
    /**
     * 保存证书数据
     * 
     * @param dataList 证书数据列表
     * @return 结果
     */
    public int saveCertificateData(List<CertificateData> dataList);
}